#ifndef STM32F4XX_TYPES_H


#ifdef __cplusplus
	extern "C" {
#endif

#define UIN8	unsigned char

#define UIN16	unsigned short int

#define UIN32	unsigned int

#define UIN64	unsigned long long int


#define IN8		signed char

#define IN16	signed short int

#define IN32	int

#define IN64	long long int





#define FLOAT	float

#define DOUBLE  double


#define ZERO_8	((UIN8) 0x00u)
#define ZERO_16	((UIN16) 0x0000u)
#define ZERO_32 ((UIN32) 0u)
#define ZERO_64 ((UIN64) 0u)

#define ONE_8 	((UIN8) 0x01u)
#define ONE_16	((UIN16) 0x0001u)
#define ONE_32	((UIN32) 1u)
#define ONE_64 	((UIN64) 1u)

#define ZERO_F	((FLOAT) 0x00u)
#define ONE_F	((FLOAT) 0x01u)

#define ZERO_D	((DOUBLE) 0x00u)
#define ONE_D	((DOUBLE) 0x01u)



#define TWO_8	((UIN8) 2u)
#define TWO_16	((UIN16) 2u)
#define TWO_32 ((UIN32) 2u)
#define TWO_64 ((UIN64) 2u)



#define FIVE_8	((UIN8) 5u)
#define FIVE_16	((UIN16) 5u)
#define FIVE_32 ((UIN32) 5u)
#define FIVE_64 ((UIN64) 5u)




#define ByteShift	0x08u
#define NibShift	0x04u

#define CheckBit(Victim, Mask)  ((Victim) & (ONE_64 << (Mask)))


#define DEVIDE_BY	/

#define REMAIN_BY	%

	struct LCD_Coord
	{
		UIN16 X_Add;	//< Starting X address of the window
		UIN16 Y_Add;	//< Starting Y address of the window
		UIN16 Height;	//< Height of the window
		UIN16 Width;	//< Width of the window
	};



	struct LCD_Line
	{
		UIN16 Start_X; 	//< Starting X coordination
		UIN16 Start_Y; 	//< Starting Y coordination
		UIN16 End_X; 	//< Ending X coordination
		UIN16 End_Y; 	//< Ending Y coordination
		UIN16 Colour; 	//< Colour of the line
	};
#ifdef __cplusplus
	}
#endif

#define STM32F4XX_TYPES_H
#endif
